#ifndef POINTOFVIEW_H
#define POINTOFVIEW_H

#include "ToolBox/gl/ViewPoints/viewpoint.h"

#include "ToolBox/vectorf.h"
#include <math.h>
#define GL3_PROTOTYPES 1
#include <GL3/gl3.h>

/*!
 * =====================================================================================
 *  \class:  PointOfView
 *  \brief:  Classe permettant de représenter une caméra dans la scène 3D
 * =====================================================================================
 */

class ViewPoint3D : public ViewPoint
{
    public :

    /*******************************************************/
    /*              Properties                             */
    /*******************************************************/

    int inverse;

    Vectorf * vecteurDirecteur; /*!< Représente la direction dans laquelle pointe la caméra */
    Vectorf * positionPOW;      /*!< Position du point de vue dans l'espace OpenGL          */
    Vectorf * angles;           /*!< Enregistre la valeur des angles correspondant à l'orientation de la caméra */

    /*******************************************************/
    /*              Constructors                           */
    /*******************************************************/

    ViewPoint3D();
    ViewPoint3D(Vectorf aValAngle);
    ViewPoint3D(Vectorf aValAngle, Vectorf position);

    /*******************************************************/
    /*              Methods                                */
    /*******************************************************/

    virtual void Use();
    virtual void Move(Vectorf aDeplacement);

    void SetVecteurDirecteur();

};


class TrackBall : public ViewPoint3D
{
    public :

    float rayon;

    TrackBall();

    void Use();
};

#endif
